function person(a, b, c, d) {
    return {
        name: this.name,
        a: a, b: b, c: c, d: d
    }
}

var egg = { name: '蛋老师' }

Function.prototype.newCall = function (obj) {
    obj.p = this
    var newArguments = []
    for (var i = 1; i < arguments.length; i++) {
        newArguments.push('arguments[' + i + ']')
    }

    var result = eval('obj.p(' + newArguments + ')')
    delete obj.p//不能改写对象
    return result
}

var bibi = person.newCall(egg, '点赞', '收藏', '转发', '充电')
console.log(bibi)